Detection of performance bottlenecks in software application execution is an active area of research. Presently, performance engineers are equipped with a number of performance analysis tools—such as JConsole™ by Sun Microsystems® and Rational Quantify™ by IBM®—which assist in the identification of performance metrics by providing processing latency breakdowns and, further, by providing visibility into the behavior of the application through debugging interfaces. These tools, however, are limited to analysis of the application at a low level and are often targeted only to a specific coding language or execution environment. For example, JConsole™ software is targeted toward Java™-based applications that execute on a Java™ Virtual Machine. Since, oftentimes, performance of a Java™-based application is dependent upon one or more applications that are not Java™-based, it is difficult to effectively determine the cause of a performance bottleneck that is occurring in the application. Furthermore, JConsole™ fails to provide high-level application performance metrics—such as, for example, any dependencies between threads that comprise a multi-threaded application—which are often the very cause of high-level performance bottlenecks.
In another approach, log files produced by the application may be parsed to identify performance metrics. For example, an administrator may review a log file that includes one or more time-stamped entries that are each associated with a different processing task that was executed by the server at the time the corresponding timestamp was recorded. However, the format of and/or data included in application log files is configured by those who developed the application and, since no standard log file methodologies have been established amongst developers, the log files are often cryptic and unreadable to the administrator. Further, developers often configure application activity logging to a minimum in attempt to reduce central processing unit (CPU) resources required to write to the log file and also to reduce the amount of memory that is required to store the log file. This diminishes the overall amount of information included in the log file that is useful to the administrator when seeking to identify potential performance bottlenecks.
Accordingly, there remains a need in the art for an enhanced technique used to identify performance bottlenecks.